package com.servlet.form;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.listener.ContextListener;
import com.servlet.mail.SendMail;
import com.servlet.model.database.BaseAcces;
import com.servlet.security.MD5;

import java.sql.Date;

public class InscriptionForm extends HttpServlet
{
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
	{
		boolean correct = false;
		
		HttpSession session = request.getSession();
		//BaseAcces base = (BaseAcces) this.config.getServletContext().getAttribute("base");
		
		BaseAcces base = ContextListener.base;
		
		String nom = request.getParameter("nom");
		String email = request.getParameter("email");
		String prenom = request.getParameter("prenom");
		String motDePasse1 = request.getParameter("motDePasse1");
		String motDePasse2 = request.getParameter("motDePasse2");
		String jour = request.getParameter("jour");
		String mois = request.getParameter("mois");
		String annee = request.getParameter("annee");
		
		String resultat = null;
		
		Date date = null;
		
		if( jour.compareTo("-1") == 0 || annee.compareTo("-1") == 0 || mois.compareTo("-1") == 0  )
		{
			date = null;
		}
		else
		{
			if(annee != "0" && mois != "0" && jour != "0")
			{
				int jourInt = Integer.parseInt(jour);
				if(jourInt <10 && jourInt > 0)
				{
					jour = "0"+jourInt;
				}
				int moisInt = Integer.parseInt(mois);
				if(moisInt <10 && moisInt > 0)
				{
					mois = "0"+moisInt;
				}
				date = Date.valueOf(annee + "-" + mois + "-" + jour);
			}
			
			date = Date.valueOf( annee + "-" + mois + "-" + jour);
		}

		if( nom != null && nom != "" && email != null && email != "" && prenom != null && prenom != "" 
				&& motDePasse1 != null && motDePasse1 != "" && motDePasse2 != null && motDePasse2 != "" )
		{
			if( Format.verifyName(nom) && Format.verifyName(prenom) )
			{
				if( Format.verifyEmail(email) )
				{
					if( Format.verifyPasswd(motDePasse1) )
					{
						if( motDePasse1.compareTo(motDePasse2) == 0 )
						{
							if( !base.existEmail(email ) )
							{
								correct = true;
							}
							else
							{
								resultat = "il existe déjà un compte avec cet email";
							}
						}
						else
						{
							resultat = "les deux mots de passe sont différents";
						}
					}
					else
					{
						resultat = "mot de passe non valide";
					}
				}
				else
				{
					resultat = "email non valide";
				}
			}
			else
			{
				resultat = "nom et/ou prenom non valides";
			}
		}
		else
		{
			resultat = "vous devez remplir tous les champs" + nom + email + prenom + motDePasse1 + motDePasse2;
		}
		
		
		
		if( correct )
		{
			System.out.println("Enregistrement du compte : " + email + " " + motDePasse1 + " " + prenom + " " + nom + " " + date);
			
			String codePasswd = MD5.generateCode(motDePasse1);
			base.addCompte(email, codePasswd, prenom, nom, date);
			SendMail.sendConfirmation(prenom, nom,email,motDePasse1);
			session.setAttribute("resultat", "Inscription réussie !!");
			response.sendRedirect("login");
		}
		else
		{
			System.out.println(resultat);
			
			session.setAttribute("resultat", "L'inscription a échoué : " + resultat );
			response.sendRedirect("inscription");
		}
	}
}